#pragma once
#include "Utils\mathlib.h"
#include "GL/glew.h"
/**
* 
*/
class Uniform
{
public:
	/**
	* Creates a Uniform object with the provided location.
	*/
	Uniform(GLint uniformLocation);

	Uniform();

	void SetLocation(GLint uniformLocation)
	{
		m_UniformLocation = uniformLocation;
	}
	/**
	* Destroys the Uniform object.
	*/
	virtual ~Uniform(void);

	/**
	* Calls the glUniform method to set the parameters in the shader.
	*/
	void operator=(float3& v);
	/**
	* Calls the glUniform method to set the parameter in the shader.
	*/
	void operator=(float2& v);
	/**
	* Calls the glUniform method to set the parameter in the shader.
	*/
	void operator=(float p);
	/**
	* Calls the glUniform method to set the matrix parameter in the shader.
	*/ 
	void operator=(float4x4& matrix);

private:
	/**
	* The location of the uniform variable in the shader.
	*/
	GLint m_UniformLocation;
};

